package com.yc.cloud.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yc.cloud.admin.dto.request.HwRegionCreateReqDTO;
import com.yc.cloud.admin.dto.request.HwRegionUpdateReqDTO;
import com.yc.cloud.admin.dto.request.HwRegionQueryReqDTO;
import com.yc.cloud.admin.vo.HwRegionVo;
import com.yc.cloud.admin.dto.HwRegionNode;
import com.yc.cloud.common.orm.CommonPage;
import com.yc.cloud.entity.HwRegion;

import java.util.List;

/**
 * <p>
 * 硬件区域管理表 服务类
 * </p>
 *
 * @author kinggu
 * @since 2025-09-29
 */
public interface HwRegionService extends IService<HwRegion> {

    /**
     * 创建区域
     */
    HwRegionVo create(HwRegionCreateReqDTO createReqDTO);

    /**
     * 更新区域
     */
    HwRegionVo update(HwRegionUpdateReqDTO updateReqDTO);

    /**
     * 删除区域
     */
    boolean delete(Long id);

    /**
     * 获取区域详情
     */
    HwRegionVo getVOById(Long id);

    /**
     * 分页查询区域列表
     */
    CommonPage<HwRegionVo> list(HwRegionQueryReqDTO queryReqDTO);

    /**
     * 获取区域树状列表
     */
    List<HwRegionNode> treeList();

    /**
     * 根据层级查询区域列表
     */
    List<HwRegionVo> getByLevel(Integer level);

    /**
     * 根据父级ID查询子区域列表
     */
    List<HwRegionVo> getByParentId(Long parentId);

    /**
     * 获取区域的所有子区域ID（递归）
     */
    List<Long> getChildrenIds(Long regionId);
}